Use case: Command process operation ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
|
All bank precharge command FMC_SDRAM_CommandTypeDef Command;
Command.CommandMode = FMC_SDRAM_CMD_PALL;
Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
Command.AutoRefreshNumber = 1;
Command.ModeRegisterDefinition = 0;
HAL_SDRAM_SendCommand(&hsdram,
/* --- */
&Command,
1000
);
|
All bank precharge command hal_sdram_command_t Command;
Command.command = HAL_SDRAM_COMMAND_PALL;
/* ----------------------------------- */
/* ----------------------------------- */
/* ----------------------------------- */
HAL_SDRAM_SendCommand(&hsdram,
HAL_SDRAM_DEVICE1,
&Command,
1000
);
|
|
Clock Enable command FMC_SDRAM_CommandTypeDef Command;
Command.CommandMode = FMC_SDRAM_CMD_CLK_ENABLE;
Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
Command.AutoRefreshNumber = 1;
Command.ModeRegisterDefinition = 0;
HAL_SDRAM_SendCommand(&hsdram,
&Command,
1000
);
|
Clock Enable command hal_sdram_command_t Command;
Command.command = HAL_SDRAM_COMMAND_CLK_ENABLE;
/* ----------------------------------- */
/* ----------------------------------- */
/* ----------------------------------- */
HAL_SDRAM_SendCommand(&hsdram,
HAL_SDRAM_DEVICE1,
&Command,
1000
);
|
|
Auto refresh mode command FMC_SDRAM_CommandTypeDef Command;
Command.CommandMode = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
Command.AutoRefreshNumber = 8;
Command.ModeRegisterDefinition = 0;
HAL_SDRAM_SendCommand(&hsdram,
&Command,
SDRAM_TIMEOUT
);
|
Auto refresh mode command hal_sdram_command_t Command;
Command.command = HAL_SDRAM_COMMAND_CLK_ENABLE;
/* ----------------------------------- */
Command.parameter = 800;
/* ----------------------------------- */
HAL_SDRAM_SendCommand(&hsdram,
HAL_SDRAM_DEVICE1,
&Command,
1000
);
|
|
Load mode command #define SDRAM_MODEREG_BURST_LENGTH_1 ((uint16_t)0x0000)
#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL ((uint16_t)0x0000)
#define SDRAM_MODEREG_CAS_LATENCY_3 ((uint16_t)0x0030)
#define SDRAM_MODEREG_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
FMC_SDRAM_CommandTypeDef Command;
tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1 |
SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL |
SDRAM_MODEREG_CAS_LATENCY_3 |
SDRAM_MODEREG_OPERATING_MODE_STANDARD |
SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;
Command.CommandMode = FMC_SDRAM_CMD_LOAD_MODE;
Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK2;
Command.AutoRefreshNumber = 1;
Command.ModeRegisterDefinition = tmpmrd;
HAL_SDRAM_SendCommand(&hsdram,
&Command,
1000
);
|
Load mode command #define SDRAM_MODEREG_BURST_LENGTH_1 ((uint16_t)0x0000)
#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL ((uint16_t)0x0000)
#define SDRAM_MODEREG_CAS_LATENCY_3 ((uint16_t)0x0030)
#define SDRAM_MODEREG_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
hal_sdram_command_t Command;
tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1 |
SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL |
SDRAM_MODEREG_CAS_LATENCY_3 |
SDRAM_MODEREG_OPERATING_MODE_STANDARD |
SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;
Command.command = HAL_SDRAM_COMMAND_LOAD;
/* ----------------------------------- */
/* ----------------------------------- */
Command.parameter = tmpmrd;
HAL_SDRAM_SendCommand(&hsdram,
HAL_SDRAM_DEVICE1,
&Command,
1000
);
|
Key changes ¶
HAL2 requires the target device (
HAL_SDRAM_DEVICEx) when sending a command.

